/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Aleatorio;

import Aleatorio.Distribuciones.GeneradorNormal;
import Aleatorio.Distribuciones.GeneradorAleatorio;

/**
 *
 * @author Driv
 */
public class GeneradorIntervalos {
    
    private Intervalo[] distribucion;
    private int cantidadDeNumeros;
    private int cantidadDeIntervalos;
    private GeneradorAleatorio generador;
    
    public GeneradorIntervalos( int cantidadDeIntervalos){
        this.cantidadDeIntervalos = cantidadDeIntervalos;
    }
    
    public Intervalo[] generarDistribucion(double[] numerosAleatorios){
        double max, min, aux;
        max = min = aux = numerosAleatorios[0];
        for (int i = 0; i < numerosAleatorios.length; i++) {
                          
             if(max < numerosAleatorios[i]) max = numerosAleatorios[i];
             if(min > numerosAleatorios[i]) min = numerosAleatorios[i];
            
        }
        
        double tamanoIntervalo = (max-min)/cantidadDeIntervalos;
        distribucion = new Intervalo[cantidadDeIntervalos];
        double limInf = min;
        for (int i = 0; i < distribucion.length; i++) {
            distribucion[i] = new Intervalo(limInf, limInf + tamanoIntervalo);
            limInf += tamanoIntervalo;
        }
        int posicion;
        
        for (int i = 0; i < numerosAleatorios.length; i++) {
            posicion = (int)((numerosAleatorios[i]-min)/tamanoIntervalo);
            if (posicion == distribucion.length) posicion--;
            distribucion[posicion].agregar();
            /*float limiteInferior = 0;
            
            
            for (int j = 0; j <= distribucion.length; j++) {
                
                if(numerosAleatorios[i] < limiteInferior){
                    distribucion[j-1]++;
                    break;
                }
                limiteInferior += tamanoIntervalo;
            }*/
        }
        
        return distribucion;
        
    }
    
    public static void main(String[] args) {
        double[] n = new double[1000000];
        
        GeneradorAleatorio generador = new GeneradorNormal(7);
        
        for (int i = 0; i < n.length; i++) {
            n[i] = generador.siguiente();
        }
        
        
        
        GeneradorIntervalos gi = new GeneradorIntervalos(20);
        
        Intervalo[] distr = gi.generarDistribucion(n);
        
        for (int i = 0; i < distr.length; i++) {
            System.out.println(distr[i]);
            
        }
    }
    
    

}
